package com.dao;

import com.beans.PageInfo;
import com.beans.RoleInfo;
import com.jdbc.DBUtil;

import java.util.List;

public class RoleDao {

    /**
     * 得到角色的个数
     *
     * @return 角色个数
     */
    public int getRoleCount() {
        long count = DBUtil.getScalar("select count(*) from roleInfo");
        return Integer.parseInt(count + "");
    }

    /**
     * 得到所有角色
     *
     * @param page 传入page对象
     * @return 返回限制内的角色列表
     */
    public List<RoleInfo> getRoleList(PageInfo page) {
        String sql = "select * from roleInfo limit ?,?";
        return DBUtil.getList(sql, RoleInfo.class, page.getBeginRow(), page.getPageSize());
    }

    /**
     * 通过Id得到角色
     *
     * @param id 角色Id
     * @return 返回单个角色列表
     */
    public RoleInfo getRoleById(Integer id) {
        String sql = "select * from roleInfo where id=?";
        return DBUtil.getSingleObject(sql, RoleInfo.class, id);
    }

    /**
     * 更新角色
     *
     * @param role 传入RoleInfo对象
     * @return 1
     */
    public int updateRole(RoleInfo role) {
        String sql = "update roleInfo set roleName=?,des=? where id=?";
        return DBUtil.update(sql, role.getRoleName(), role.getDes(), role.getId());
    }

    /**
     * 根据Id删除角色
     *
     * @param id 角色ID
     * @return 1
     */
    public int deleteRoleById(Integer id) {
        String sql = "delete from roleInfo where id=?";
        return DBUtil.update(sql, id);
    }

    /**
     * 查询所有的角色
     *
     * @return List<RoleInfo>的列表
     */
    public List<RoleInfo> getAllRole() {
        String sql = "select * from roleInfo";
        return DBUtil.getList(sql, RoleInfo.class);
    }

    /**
     * 添加角色
     *
     * @param role 传入的RoleInfo对象
     * @return 1
     */
    public int addRole(RoleInfo role) {
        String sql = "insert into roleInfo (roleName,des) values (?,?) ";
        return DBUtil.update(sql, role.getRoleName(), role.getDes());
    }

    /**
     * 查询角色是否重复
     *
     * @param roleName 角色名称
     * @return RoleInfo对象
     */
    public RoleInfo getSingleRole(String roleName) {
        String sql = "select * from roleInfo where roleName=?";
        return DBUtil.getSingleObject(sql, RoleInfo.class, roleName);
    }

    public List<String> getMenuIds(Integer id) {
        String sql = "select menuId from roleMenu where roleId=? ";
        return DBUtil.getList(sql, id);
    }

    public void updateRoleMenu(Integer roleId, String[] menuIds) {
        DBUtil.update("delete from roleMenu where roleId=?", roleId);

        for (String menuId : menuIds) {
            DBUtil.update("insert into roleMenu (roleId,menuId) values (?,?)", roleId, menuId);
        }
    }

    public void delRole(String[] ids) {
        String sql = "delete from roleInfo where id in(";
        for(int i=0;i<ids.length;i++) {
            if(i<ids.length-1) {
                sql+=ids[i] + ",";
            }else {
                sql+=ids[i] + ")";
            }
        }
        DBUtil.update(sql);
    }
}
